//定义一个变量 用于保存定时器的标识
/*参数 obj要执行动画的对象
*      attr 要执行动画的样式 比如 left width top height
*      speed移动的速度(正数向右移动，负数向左移动)
*      target执行动画的目标位置
*      callback回调函数
* */
function move(obj,attr,target,speed,callback) {
    clearInterval(obj.timer);//清除上一次的定时器
    var current=parseInt(getStyle(obj,attr));
    //判断速度的正负值 如果从0到600移动 则speed为正
    //                如果从600到0移动 则speed为负
    if (current>target){
        speed=-speed;
    }
    //向执行动画的对象中添加一个timer属性，用来保存它自己的定时器标识
    obj.timer=setInterval(function () {
        var oldValue=parseInt(getStyle(obj,attr));
        // alert(oldValue);
        var newValue=oldValue+speed;
        //newValue到达0时 停住
        //向右移动时，需要判断newValue是否大于target,
        //向左移动时，需要判断newValue是否小于target
        if ((speed>0&&newValue>target)||(speed<0 && newValue<target)){
            newValue=target;
        }
        obj.style[attr]=newValue+"px";
        if (newValue==target){
            clearInterval(obj.timer);
            callback&&callback();
        }
    },30)
}
function getStyle(obj,name) {  //获取当前元素的样式 获取元素的任意样式
    if (window.getComputedStyle){
        return getComputedStyle(obj,null)[name];  //正常浏览器的方式 具有getComputedStyle()的方法
    }else {
        return  obj.currentStyle[name]; //current当前的  //IE8用
    }//第一种方式 也可以用下面的三元运算符 ture?语句1：语句2
    // return window.getComputedStyle?getComputedStyle(obj,null)[name]:obj.currentStyle[name];
}
//定义一个函数 用来向一个元素中添加指定的class属性值
//参数
//      obj 要添加class属性
//      cn  要添加的class值
function addClass(obj,cn) {
    if (!hasClass(obj,cn)){
        obj.className+=" "+cn;
    }

}
//定义一个函数 判断一个元素中是否含有指定的class属性值 如果有该class则返回true 如果没有 则返回false
function hasClass(obj,cn) {
    //判断obj中有没有cn class  创建一个正则表达式
    // var reg=/\bc2\b/;//有c2且是独立的
    var reg=new RegExp("\\b"+cn+"\\b");
    // alert(reg);
    return reg.test(obj.className);
}
//删除元素的class属性
function removeClass(obj,cn) {
    //创建一个正则表达式
    var reg=new RegExp("\\b"+cn+"\\b");
    obj.className=obj.className.replace(reg,"");
}
function toggleClass(obj,cn) {//toggleClass用来切换一个类，如果元素中具有该类，则删除 如果没有 则添加
    if (hasClass(obj, cn)) {
        removeClass(obj, cn);
    } else {
        addClass(obj, cn);
    }
}